package cn.doitedu.df_rdd

import cn.doitedu.beans.{JavaStudent, ScalaStudentBean}
import cn.doitedu.util.SparkUtil
import org.apache.spark.rdd.RDD

/**
 * @Date 22.4.12
 * @Created by HANGGE
 * @Description
 *
 */
object C05_RDD_2_DF_ScalaBean {
  def main(args: Array[String]): Unit = {
    val session = SparkUtil.getSession
    //获取sparkContext
    val sc = session.sparkContext
    // 加载数据  RDD
    val rdd: RDD[String] = sc.textFile("data\\scores\\Scores.csv")

    // RDD的数据结构 封装JavaBean
    val scalaBeanRDD: RDD[ScalaStudentBean] = rdd.map(line => {
      val arr = line.split(",")
     new ScalaStudentBean(arr(0).toInt, arr(1), arr(2).toInt, arr(3), arr(4), arr(5).toDouble)
    })
    /**
     * 将类型是scalabean的数据转换成DF  需要 ScalaBean具有get方法
     * 底层解析的是get方法
     * 可以再类的属性上 添加 @BeanProperty注解
     * @BeanProperty
     * val name:String ,
     */

    val df = session.createDataFrame(scalaBeanRDD, classOf[ScalaStudentBean])

    df.show()
    df.printSchema()


  }

}
